plsql基础(代码块,select into 数据类型,execute immediate) |
您所在的位置:网站首页 › oracle select * into › plsql基础(代码块,select into 数据类型,execute immediate) |
文章目录
一定义:语法:变量和常量:&:输入符号
二 plsql中的数据类型三select into语句:1.语法3.使用execute immediate 执行
一定义:
语法:
declare
--声明部分
begin
--代码块
exception
异常处理
end;
变量和常量:
变量和常量都是用来保存数据的 语法: 变量名 数据类型:=初始值; 变量可以在程序中修改它存储的值 常量:不可修改,在声明是必须包含常量名 语法: 常量名 constant 数据类型:=常量值; 标识符命令规范: (1)对象名以字母开头,可以有数字,——,#等特殊字符 (2)长度不能超过30个英文字符 (3)不能以数字开头 (4)避免使用oracle关键字 sql dbms_output.put(字符串),--在控制台输出一个字符串内容 ,输出晚不换行,但是不换行不输出 dbms_output.put_line(z字符串)在控制台输出一个字符串内容,输出之后换行 declare --声名一个变量,并给变量一个初始值 'PLSQL' v varchar2(30):='PLSQL'; --声名一个常量 p constant number(7,6):=3.141591; begin /* --能过dbms_output.put_line,输出变量v的值 dbms_output.put_line(v); --修改变量的值 v:='oracle'; dbms_output.put_line(v); dbms_output.put_line(p); --p:=3; 常量值不可修改 */ --输出不换行 dbms_output.put(v);--输出变量v的值 dbms_output.put('smith'); dbms_output.put(' ni hao'); --dbms_output.put_line(''); --使用dbms_output.put_line()打印空字符串,让其换行 dbms_output.new_line(); --换行 end; &:输入符号注意: 数字类型:&变量名 字符串类型:‘&变量名’ select * from emp where deptno=&部门编号; 二 plsql中的数据类型1.基础类型 1数字类型: number(长度,精度):最大长度38,最小默认1 integger:整数类型 pls_integer:整数类型 binary_interger:整数类型 filoat:浮点型(小数类型) 2.字符串类型 varchar2(长度):变长字符串类型,最大长度4000个字符(英文) char(长度):定长字符串类型 long:可以存放2G的内容(oralce不建议使用的类型) CLOB:存放大文本内容(txt,word),可能会在代码块中出现 blob:二进制方式存储大文件(音频,视频文件) 3.日期类型 date:日期类型 timestamp:时间类型 4.布尔类型 boolean:只有三个值,true,false null;2 2.复杂类型 5.记录类型: record:可以存放多个值; 记录类型:可以存放多个值,但都属于一条数据 定义类型语法 type 类型名称 is record( ·属性名 数据类型; ......... );变量声名 变量名 类型名; 记录类型的使用; 变量名.属性名;—取一个记录类型的属性值 变量名.属性名:=值; declare --定义一个记录类型 type amtype is record( name varchar2(30), job varchar2(50), sal number(5) ); --声名一个记录类型变量 v amtype; begin v.name:='张三'; v.job:='CLERK'; v.sal:=1234; --记录类型变量不能直接打印 dbms_output.put_line(v.name||','||v.job||','||v.sal); end;6.%type类型 %type:取其他对象的类型,作为变量类型(取表中的一列数据类型,作为变量类型) 对象名%type(类型) 注意: 只能取单一类型 emp.job%type–取emp表中job列的数据类型,作为一个新的类型varchar(9) 7.%rowtype类型 %rowtype类型:它是记录类型和%type的类型的结合;取一个对象的类型作为变量的类型 表名%rowtype; emp%rowtype 三select into语句: 1.语法select 列名,列名,…into 变量,变量,…from 表名 where 。。group by。。。order by。。 注意:select into语句每次只能查询一条数据,不能多不能少 declare --声名一个变量保存,员工的姓名 v_ename varchar2(20); begin select ename into v_ename from emp where empno=7369; --将7369的员工编号查询到变量v_ename中 --打印员工姓名 dbms_output.put_line(v_ename); end;代码块部分:sql语句,流程控制语句 sql语句的扫行: 1.select into语句(selec) 2.insert,update,delete语句(可以直接在代码块中扫行) begin insert into dept values(50,'dept1','loc'); end; 3.使用execute immediate 执行语法: execute immediate sql语句(字符串类型)[into 变量] [using 值]; into 字句和select into 中的一样:用于将select查询结果保存到变量中 using子句:用于给sql语句传递参数 ddl语句不能直接在plsql代码块中运行,但是可以放在execute immediate 中运行 declare --声名一个变量保存员工的姓名 v_ename varchar2(20); begin execute immediate 'select ename from emp where empno=7369' into v_ename; --打印查询结果,打印变量的值 dbms_output.put_line(v_ename); end;execute immediate 语句中sql点位符 :n 表示点位符,n一般情况下是一个正整数,也可以是其他字符串,如果sql语句中包含点位符,那么必须使用using字句给点位符传值; begin execute immediate 'delete from emp where empno=:1' using 7369;--delete from emp where empno=7369 end;oracle字符串中包含字符串的情况: 1)使用两个单引号表示一个单引号 2)使用chr()函数来获取一个单引号chr(39) execute immediate 和直接执行的sql语句的 1)ddl语句不能直接在plsql代码块中运行,但是可以放在execute immediate中运行 2)当sql语句操作的表,是使用execute immediate动态创建的,那么只能在execute immediate中运行 3)当将表名放入变量中时,这是必须使用execute immediate 语句来运行 begin --创建一张ttt3的表 execute immediate 'create table ttt3(id number(11),name varchar2(30))'; --给表里添加数据 insert into ttt3 values(1,'plsql'); ---不允许运行,但是可以在execute immediate中运行 end; |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |